/*
 *  AComposition.h
 *  libavid
 *
 *  Created by Peter on 24.02.12.
 *  Copyright 2012 __MyCompanyName__. All rights reserved.
 *
 */
#ifndef A_COMPOSITION_H
#define A_COMPOSITION_H

#include "AComponent.h"
#include "ATrackGroup.h"
#include "AvTypes.h"

class AMediaDesc; // in AMediaDesc.h

/*
 * This basically represents what a user would refer to as a "Sequence"
 * Version: 2 (MC 5.0.3)
 */
class AComposition : public ATrackGroup
{

public:

	A_DECLARE_CLASS( 'CMPO', AComposition, ATrackGroup );

	virtual void readFromStream( AStream& str, const AObjDoc& objd );
	virtual void dump( std::ostream& str ) const;

	Int32       _mobIdHigh;
	Int32       _mobIdLow;
	Int32       _lastModified;
	Int8        _mobType;
	Int32       _usageCode;
	AMediaDesc* _physicalMedia; // Usually either AMediaDesc* directly, or CDCI* or RGBA*, potentially even PCMA*, need to verify that

	// PClass Extensions
	Int32  _creationTime;

	// PClass Extension MobID
	aafMCMobID_t _mobId;

};

#endif /*Inclusion Guard*/
